program matrik;
uses crt;
type Larik = array [1..25,1..25] of real;
var Pilihan : byte;
    I,J,K,L,N,M : byte;
    A,B,C : Larik;
    pilih : integer;

Procedure Data;
begin
     Clrscr;

     Writeln('Daftar Kelompok    ');
     writeln('===================');
     Writeln('1. Tedy Sultoni    ');
     Writeln('2. Ah. Fatoni Arif ');
     Writeln('3. M. Turmudzi     ');
     Readln;
end;

Procedure lihat;
Begin
     Clrscr;
     Write('baris matrik pertama                      ? ');readln(M);
     Write('kolom matrik pertama / baris matrik kedua ? ');readln(N);
     Write('kolom matrik kedua                        ? ');readln(L);
     Writeln;
     For I:=1 to M do
     Begin
          For J:=1 to N do
          Begin
               Write('nilai[',I,',',J,']?');Readln(A[I,J]);
          End;
          Writeln;
     End;
     ClrScr;
     Writeln('Hasil Matrik:');
     Writeln;
     For I:=1 to M do
     Begin
          For J:= 1 To L do Write(A[I,J]:9:0);
          Writeln;
     End;
     readln;
End;

Procedure tambah;
Begin
     Clrscr;
     Write('baris matrik pertama                      ? ');readln(M);
     Write('kolom matrik pertama / baris matrik kedua ? ');readln(N);
     Write('kolom matrik kedua                        ? ');readln(L);
     Writeln;
     Writeln('matrik yang pertama:');
     For I:=1 to M do
     Begin
          For J:=1 to N do
          Begin
               Write('nilai[',I,',',J,']?');Readln(A[I,J]);
          End;
          Writeln;
     End;
     Writeln('matrik yang kedua:');
     For I:=1 to N do
     Begin
          For J:=1 to L do
          Begin
               Write('nilai[',I,',',J,']?');Readln(B[I,J]);
          End;
          Writeln;
     End;
     For I:= 1 to M do
     Begin
          For J := 1 To N do
          Begin
               C[I,J] := 0;
               For K := 1 To L do
               C[I,J] := A[I,J]+B[I,J]
          End;
     End;
     ClrScr;
     Writeln('Hasil dari penjumlahan matrik:');
     Writeln;
     For I:=1 to M do
     Begin
          For J:= 1 To L do Write(C[I,J]:9:0);
          Writeln;
     End;
     readln;
End;

Procedure kurang;
Begin
     Clrscr;
     Write('baris matrik pertama                      ? ');readln(M);
     Write('kolom matrik pertama / baris matrik kedua ? ');readln(N);
     Write('kolom matrik kedua                        ? ');readln(L);
     Writeln;
     Writeln('matrik yang pertama:');
     For I:=1 to M do
     Begin
          For J:=1 to N do
          Begin
               Write('nilai[',I,',',J,']?');Readln(A[I,J]);
          End;
          Writeln;
     End;
     Writeln('matrik yang kedua:');
     For I:=1 to N do
     Begin
          For J:=1 to L do
          Begin
               Write('nilai[',I,',',J,']?');Readln(B[I,J]);
          End;
          Writeln;
     End;
     For I:= 1 to M do
     Begin
          For J := 1 To N do
          Begin
               C[I,J] := 0;
               For K := 1 To L do
               C[I,J] := A[I,J]-B[I,J]
          End;
     End;
     ClrScr;
     Writeln('Hasil dari pengurangan matrik:');
     Writeln;
     For I:=1 to M do
     Begin
          For J:= 1 To L do Write(C[I,J]:9:0);
          Writeln;
     End;
     readln;

End;

Procedure kali;
Begin
     Clrscr;
     Write('baris matrik pertama                      ? ');readln(M);
     Write('kolom matrik pertama / baris matrik kedua ? ');readln(N);
     Write('kolom matrik kedua                        ? ');readln(L);
     Writeln;
     Writeln('matrik yang pertama:');
     For I:=1 to M do
     Begin
          For J:=1 to N do
          Begin
          Write('nilai[',I,',',J,']?');Readln(A[I,J]);
          End;
          Writeln;
     End;
     Writeln('matrik yang kedua:');
     For I:=1 to N do
     Begin
          For J:=1 to L do
          Begin
               Write('nilai[',I,',',J,']?');readln(B[I,J]);
          End;
          Writeln;
     End;
     For I:= 1 to M do
     Begin
          For J := 1 To L do
          Begin
               C[I,J] := 0;
               For K := 1 To L do
               C[I,J] := C[I,J]+A[I,K]*B[K,J]
          End;
     End;
     ClrScr;
     Writeln('Hasil dari perkalian matrik :');
     Writeln;
     For I:=1 to M do
     Begin
          For J:= 1 To L do Write(C[I,J]:9:0);
          Writeln;
     End;
     readln;
End;

Procedure bagi;
Begin
     Clrscr;
     Write('baris matrik pertama                      ? ');readln(M);
     Write('kolom matrik pertama / baris matrik kedua ? ');readln(N);
     Write('kolom matrik kedua                        ? ');readln(L);
     Writeln;
     Writeln('matrik yang pertama:');
     For I:=1 to M do
     Begin
          For J:=1 to N do
          Begin
               Write('nilai[',I,',',J,']?');Readln(A[I,J]);
          End;
          Writeln;
     End;
     Writeln('matrik yang kedua:');
     For I:=1 to N do
     Begin
          For J:=1 to L do
          Begin
          Write('nilai[',I,',',J,']?');Readln(B[I,J]);
          End;
          Writeln;
     End;
     For I:= 1 to M do
     Begin
          For J := 1 To N do
          Begin
               C[I,J] := 0;
               For K := 1 To L do
               C[I,J] := A[I,J]/B[I,J]
          End;
     End;
     ClrScr;
     Writeln('Hasil dari pembagian matrik:');
     Writeln;
     For I:=1 to M do
     Begin
          For J:= 1 To L do Write(C[I,J]:9:0);
          Writeln;
     End;
     readln;
End;

Begin
Repeat
     Clrscr;
     writeln('Menu Utama');
     writeln;
     writeln('0. Lihat Data Kelompok');
     writeln('1. Lihat Matrik');
     Writeln('2. Menghitung Penjumlahan Matrik');
     writeln('3. Menghitung Pengurangan Matrik');
     Writeln('4. Menghitung Perkalian Matrik');
     writeln('5. Menghitung Pembagian Matrik');
     Writeln('6. Keluar');
     Writeln;
     Write('masukkan pilihan : '); readln(pilih);
     Case pilih of
     0 : data;
     1 : lihat;
     2 : tambah;
     3 : kurang;
     4 : kali;
     5 : bagi;
     End;
Until pilih = 6;
End.
